<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="csrf-token" content="{{ csrf_token() }}">
    <title>LayIM</title>
    <link rel="stylesheet" href="{{asset('asset/layui/css/layui.css')}}" media="all">
</head>
<body>
<ul class="layui-nav">
    <li class="layui-nav-item" style="float: right;">
        <form id="logout-form" action="{{ route('logout') }}" method="POST">
            @csrf
            <a href="javascript:;" id="logout">退出登录</a>
        </form>
    </li>
    <li class="layui-nav-item layui-this"><a href="javascript:;">首页</a></li>
</ul>
<script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.js"></script>
<script src="{{asset('asset/layui/layui.js')}}"></script>
<script>
    $("#logout").click(function () {
        $("#logout-form").submit();
    });

    var ping;

    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });
    layui.use(['layim'], function (layim) {
        layim.on('ready', function (options) {
            // console.log(options);

            //接受离线消息
            $.ajax({
                url: "/home/offline_message",
                type: "post",
                data: {},
                dataType: "json",
                success: function (res) {
                },
                error: function () {
                    layer.msg("网络繁忙", function () {
                    });
                }
            });
        });
        //基础配置
        layim.config({
            init: {
                url: '/home/me' //接口地址（返回的数据格式见下文）
                , type: 'get' //默认get，一般可不填
                , data: {} //额外参数
            } //获取主面板列表信息，下文会做进一步介绍

            //获取群员接口（返回的数据格式见下文）
            , members: {
                url: '/home/groupMembers' //接口地址（返回的数据格式见下文）
                , type: 'get' //默认get，一般可不填
                , data: {} //额外参数
            }

            //上传图片接口（返回的数据格式见下文），若不开启图片上传，剔除该项即可
            , uploadImage: {
                url: '' //接口地址
                , type: 'post' //默认post
            }

            //上传文件接口（返回的数据格式见下文），若不开启文件上传，剔除该项即可
            , uploadFile: {
                url: '' //接口地址
                , type: 'post' //默认post
            }
            //扩展工具栏，下文会做进一步介绍（如果无需扩展，剔除该项即可）
            , tool: [{
                alias: 'code' //工具别名
                , title: '代码' //工具名称
                , icon: '&#xe64e;' //工具图标，参考图标文档
            }]

            , msgbox: layui.cache.dir + 'css/modules/layim/html/msgbox.html' //消息盒子页面地址，若不开启，剔除该项即可
            , find: layui.cache.dir + 'css/modules/layim/html/find.html' //发现页面地址，若不开启，剔除该项即可
            , chatLog: layui.cache.dir + 'css/modules/layim/html/chatlog.html' //聊天记录页面地址，若不开启，剔除该项即可
            , copyright: true
        });

        //建立WebSocket通讯
        //注意：如果你要兼容ie8+，建议你采用 socket.io 的版本。下面是以原生WS为例
        var socket = new WebSocket('ws://localhost:7272');
        //连接成功时触发
        socket.onopen = function () {
            console.log('websocket连接成功');
            ping = setInterval(function () {
                socket.send('{"type":"ping"}');
                console.log("ping...");
            }, 20000);
        };


        socket.onmessage = function (e) {
            // json数据转换成js对象
            var data = eval("(" + e.data + ")");
            var type = data.type || '';
            switch (type) {
                // Events.php中返回的init类型的消息，将client_id发给后台进行uid绑定
                case 'init':
                    // 利用jquery发起ajax请求，将client_id发给后端进行uid绑定
                    $.ajax({
                        url: "/home/init",
                        type: "post",
                        data: {client_id: data.client_id, '_token': '{{csrf_token()}}'},
                        dataType: "json",
                        success: function (res) {
                        },
                        error: function () {
                            // layer.msg("网络繁忙", function () {
                            // });
                        }
                    });
                    break;
                case 'chatMessage_one':
                    // console.log(data);
                    layim.getMessage(data.data);
                    break;
                case 'chatMessage_group':
                    // console.log(data);
                    layim.getMessage(data.data);
                    break;
                // 当mvc框架调用GatewayClient发消息时直接alert出来
                default :
                    alert(e.data);
            }
        };
        socket.onclose = function () {
            clearInterval(ping);
            console.log('websocket连接关闭');
        };

        socket.onerror = function () {
            console.log('onerror');
        };

        //监听修改签名
        layim.on('sign', function (value) {
            $.ajax({
                url: "/home/update_sign",
                type: "post",
                data: {sign: value},
                dataType: "json",
                success: function (res) {
                    if (res.code == 200) {
                        layer.msg(res.msg)
                    } else {
                        layer.msg(res.msg, function () {
                        })
                    }
                },
                error: function () {
                    layer.msg("网络繁忙", function () {
                    });
                }
            })
        });
        //监听发送消息
        layim.on('sendMessage', function (res) {
            var mine = res.mine; //包含我发送的消息及我的信息
            var to = res.to; //包含我发送的消息及我的信息
            //监听到上述消息后，就可以轻松地发送socket了，如：
            // console.log(res);
            if (to.type == 'friend') {//私聊
                $.ajax({
                    url: "/home/say",
                    type: "post",
                    data: {type: 'chatMessage_one', data: res},
                    dataType: "json",
                    success: function (res) {
                    },
                    error: function () {
                        layer.msg("网络繁忙", function () {
                        });
                    }
                })
            } else if (to.type == 'group') {//群聊
                $.ajax({
                    url: "/home/say",
                    type: "post",
                    data: {type: 'chatMessage_group', data: res},
                    dataType: "json",
                    success: function (res) {
                    },
                    error: function () {
                        layer.msg("网络繁忙", function () {
                        });
                    }
                })
            }
        });
        //监听在线状态切换
        layim.on('online', function (status) {
            // console.log(status); //获得online或者hide

            $.ajax({
                url: "/home/change_stauts",
                type: "post",
                data: {status: status},
                dataType: "json",
                success: function (res) {
                },
                error: function () {
                    layer.msg("网络繁忙", function () {
                    });
                }
            })
        });
    });
</script>
</body>
</html>
